www.aeom.ho.ua
ЛАБОPАТОPНА PОБОТА №6
ТЕМА: Програмування послідовного порту передачі даних в ІВМ РС.
МЕТА: Набути навичок з програмування асинхронного адаптера, організації передачі і прийому даних за допомогою послідовного інтерфейсу.
Короткі теоретичнi вiдомостi
Послідовна передача даних означає, що дані передаються з використанням єдиної лінії. При цьому біти байта даних передається по черзі з використанням одного дроту. Для синхронізації групі бітів звичайно передує спеціальний стартовий біт, після групи бітів слідують біт перевірки на парність і один або два стопові біти. Іноді біт перевірки на парність може, бути відсутнім.
Стартовий біт сигналізує про початок передачі даних. Далі передаються біти даних, спочатку молодші, потім старші. Якщо використовується біт парності P, то передається і він. Біт парності має таке значення, щоб в пакеті бітів загальна кількість одиниць (або нулів) була парна або непарна.
В самому кінці передаються один або два стопових біти STOP, завершують передачу байта. Потім рівень лінії передачі знову встановлюється в 1 до приходу наступного стартового біта.
Використання парності, стартових і стопових бітів визначають протокол передачі даних. Очевидно, що передавач і приймач даних повинен використовувати один і той же протокол, інакше зв'язок буде неможливим.
Інша важлива характеристика - швидкість передачі даних. Вона також повинна бути однаковою для передавача і приймача.
Швидкість передачі даних звичайно вимірюється в бодах. Боди - це кількість бітів, що передаються за секунду. При цьому враховуються і старт/стопові біти, а також біт парності.
Іноді використовується інший термін – біти за секунду (bps). Тут мається на увазі ефективна швидкість передачі даних, без урахування службових бітів.
Порти асинхронного адаптера
На етапі ініціалізації системи модуль POST BIOS тестує наявні асинхронні адаптери і ініціалізує перші два. Їх базові адреси розташовуються в області даних BIOS починаючи з адреси 0000:0400h.
Перший адаптер COM1 має базову адресу 3F8h і займає діапазон адрес від 3F8h до 3FFh. Другий адаптер COM2 має базову адресу 2F8h і займає адреси 2F8h...2FFh.
Асинхронні адаптери можуть генерувати переривання:
– COM1 - IRQ4 (відповідає INT 0Ch)
– COM2 - IRQ3 (відповідає INT 0Bh)
Розглянемо призначення окремих бітів цих портів.
Порт 3F8h. Цей порт відповідає регістру передаваємих даних. Для пере-дачі в порт 3F8h необхідно записати передаваємий байт даних. Після прийому даних від зовнішнього пристрою вони можуть бути прочитані з цього порту.
Залежно від стану старшого біта управляючого слова, що виводиться в управляючий регістр з адресою 3FBh, призначення порту 3F8h може змінюватися. Якщо цей біт рівний 0, порт використовується для запису передаваємих даних. Якщо ж біт рівний 1, порт використовується для виводу значення молодшого байта дільника частоти тактового генератора. Змінюючи вміст дільника, можна змінювати швидкість передачі даних. Старший байт дільника записується в порт 3F9h.
Залежність швидкості передачі даних від значення дільника частоти представлено в наступній таблиці:
Дільник
Швидкість передачі, бод
1040
110
768
150
384
300
198
600
96
1200
48
2400
Дільник
Швидкість передачі, бод
24
4800
12
9600
6
19200
3
38400
2
57600
1
115200
Порт 3FAh. Регістр ідентифікації переривання. Прочитавши його вміст, програма може визначити причину переривання.
Формат регістра:
D7 D6 D5 D4 D3 D2 D1 D0
1 – немає переривань, що очікують обслуговування
00 – переривання по ліній стану приймача, виникає при переповненні приймача, помилках парності або формату даних або при стані “BREAK”. Скидається після читання стану лінії з порту 3FDh
01 – Дані прийняті і доступні для читання. Скидається після читання даних з потру 3FDh
10 – Буфер передавача пустий. Скидається при записі нових даних у регістр даних передавача, порт 3F8h
11 – Стан модему. Встановлюється при зміні стану вхідних ліній CTS, RI, DCD, DSR. Ск...